use crate::helpers::{Bot, Config};
use anyhow::Result;
use db::{/*models::MatrixOrTelegramId,*/ Db};
use teloxide::{prelude::*, types::MessageEntityKind};

use uuid::Uuid;

pub async fn real_url(
    bot: Bot,
    q: CallbackQuery,
    data: &str,
    db: Db,
    _config: Config,
) -> Result<()> {
    let _user_id = q.from.id;
    // let user = db.get_user_id(&MatrixOrTelegramId::TelegramId { id: user_id, username: None }).await?;
    let post_id = Uuid::parse_str(data)?;
    let _real_url = db.get_real_url(&post_id).await?;
    db.set_show_real_url(&post_id).await?;
    let _is_archived = db.is_read(&post_id).await?;
    let _is_favorite = db.is_favorite(&post_id).await?;
    let _message_id = q.message.clone().unwrap().id;
    let _chat_id = q.message.clone().unwrap().chat.id;
    bot.answer_callback_query(q.id).text("real url!").await?;
    // if let Some(entities) = q.message.clone().unwrap().clone().entities(){
    // let mut new_entities = Vec::with_capacity(entities.len());
    //     for entity in entities{
    //         match &entity.kind {
    //             MessageEntityKind::TextLink{url} => { new_entities.push(MessageEntity { kind: MessageEntityKind::TextLink { url: Url::parse(&real_url.as_ref().unwrap()).unwrap() } , offset: entity.offset, length: entity.length } )}
    //             // MessageEntityKind::Url => {
    //             //     new_entities.push(MessageEntity { kind: MessageEntityKind::Url, offset: (), length: () })
    //             // }
    //             _ => {new_entities.push(entity.clone())}
    //         }
    //     }
    // bot.edit_message_text(chat_id, message_id, escape(&escape_link_url(q.message.clone().unwrap().text().unwrap())))
    // .entities(new_entities)
    // .reply_markup(standart_keyboard(data, is_archived, is_favorite, true))
    // .await?;
    // } else {
    // bot.edit_message_text(chat_id, message_id, escape(&escape_link_url(&real_url.unwrap())))
    // // .entities(new_entities)
    // .reply_markup(standart_keyboard(data, is_archived, is_favorite, true))
    // // bot.edit_message_reply_markup(chat_id, message_id)
    // //     .reply_markup(standart_keyboard(data, is_archived, is_favorite, true))
    //     .await?;
    // }
    q.message
        .clone()
        .unwrap()
        .clone()
        .entities()
        .is_some_and(|x| {
            x.iter().any(|entity| match &entity.kind {
                MessageEntityKind::TextLink { url: _ } => true,
                _ => false,
            })
        });
    Ok(())
}
